package com.hualude.roadsign.service;

import com.hualude.roadsign.dto.HighLeverDto;
import com.hualude.roadsign.dto.DTRequestDto;
import com.hualude.roadsign.dto.DTResponseDto;

import java.util.List;

/**
 * Created by xu_jiaHui on 2018/3/24.
 */
public interface HighLeverManageService {
    /**
     * @Description: 窨井信息DT展示
     * @author xu_jiaHui
     * @date 2017/8/8 15:46
     */
    public DTResponseDto getHighLever4DT(DTRequestDto dtRequestDto,
                                     String actorIds,
                                     Integer orgId,
                                     Boolean audit,
                                     String startRoad,
                                     String endRoad,
                                     String roadName,
                                     Integer alarmBinding) throws Exception;

    /**
     * @Description: 通过ID删除窨井
     * @author xu_jiaHui
     * @date 2017/8/8 20:46
     */
    public Integer deleteHighLever(String monitorIds) throws Exception;

    /**
     * @Description: 添加窨井信息
     * @author xu_jiaHui
     * @date 2017/8/8 20:48
     */
    public Integer addHighLever(HighLeverDto monitorDto) throws Exception;

    /**
     * @Description: 更新窨井信息
     * @author xu_jiaHui
     * @date 2017/8/9 12:31
     */
    public Integer updateHighLever(HighLeverDto monitorDto) throws Exception;

    /**
     * @Description: 根据路名获取起始路段
     * @author xu_jiaHui
     * @date 2017/8/9 13:12
     */
    public List<String> getStartRoadByRoadName(String roadName, String actorIds, Integer orgId) throws Exception;

    /**
     * @Description: 根据所在城市, 路名, 起始路名获取结束路名
     * @author xu_jiaHui
     * @date 2017/8/9 13:27
     */
    public List<String> getEndRoadByStartRoad(String city, String monitorRoadName, String startRoad, String actorIds, Integer orgId) throws Exception;

    /**
     * @Description: 获取窨井信息用于列表展示4App
     * @author xu_jiaHui
     * @date 2017/8/9 14:06
     */
    public List<HighLeverDto> getHighLever4APP(String actorIds,
                                       Integer orgId,
                                       Integer mCount,
                                       Integer mSize,
                                       String city,
                                       String startRoad,
                                       String endRoad,
                                       String roadName,
                                       String alarmtype) throws Exception;

    /**
     * @Description: 通过id获取信号箱信息
     * @Author: xu_jiaHui
     * @Date: 2017/8/10 16:28
     */
    public HighLeverDto getHighLeverById(Integer monitorId) throws Exception;

    /**
     * @Description: 获取信号机城市列表4App
     * @Author: xu_jiaHui
     * @Date: 2017/8/10 16:44
     */
    public List<String> getCity4HighLever4App(String actorIds, Integer orgId, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 根据City获取路名列表
     * @Author: xu_jiaHui
     * @Date: 2017/8/10 16:51
     */
    public List<String> getRoadName4HighLeverByCity(String actorIds, Integer orgId, String city, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 根据 城市 路名 起始路名 获取结束路名
     * @Author: xu_jiaHui
     * @Date: 2017/8/11 19:59
     */
    public List<String> getEndRoadByStartRoad4App(String city, String monitorRoadName, String startRoad, String actorIds, Integer orgId, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 根据 城市 路名 获取起始路名
     * @Author: xu_jiaHui
     * @Date: 2017/8/11 20:49
     */
    public List<String> getStartRoadByRoadName4App(String city, String roadName, String actorIds, Integer orgId, Integer mCount, Integer mSize) throws Exception;

    /**
     * @Description: 获取窨井信息用于App端地图展示
     * @Author: xu_jiaHui
     * @Date: 2017/8/11 22:35
     */
    public List<HighLeverDto> getHighLever4Map4App(Integer orgId,
                                           String actorIds,
                                           double neLongitude,
                                           double neLatitude,
                                           double swLongitude,
                                           double swLatitude) throws Exception;

    /**
     * @Description: 审核窨井信息
     * @Author: xu_jiaHui
     * @Date: 2017/8/12 18:31
     */
    public Integer auditHighLever(String highLeverIds) throws Exception;

    /**
     * @Description: 添加巡查记录
     * @author xu_jiaHui
     * @date 2018/3/26 22:44
     */
    public Integer setUpPatrolRecord(Integer highLeverId,String highLeverPatrolTime, String highLeverPatrolContent,Integer highLeverModifierId)throws Exception;

    /**
     * @Description: 绑定报警器
    * @author xu_jiaHui
     * @date 2018/4/22
     */
    public Integer bindingDevice(String deviceId, Integer highLeverId) throws Exception;

    /**
     * @Description: 解绑设备
    * @author xu_jiaHui
     * @date 2018/4/22
     */
    public Integer unbindingDevice(String deviceId, Integer highLeverId)throws Exception;

    /**
     * @Description: 获取故障通知列表
    * @author xu_jiaHui
     * @date 2018/4/26
     */
    public DTResponseDto showAlarmHistory(DTRequestDto dtRequestDto, String deviceId, Integer deviceType)throws Exception;

    public List<HighLeverDto> getDeviceInfo(Integer deviceId) throws Exception;

}
